home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / a_utils / ffccflow / ffccflow.lha / ffccc+flow / ffccc / floppy.vmshlp < prev    next >
Text File  |  1992-07-31  |  9KB  |  284 lines

  1. 1   FLOPPY
  2.  
  3.    Floppy is a program which checks that an input file of Fortran
  4.    code complies with a set of coding conventions. 
  5.  
  6.    There is a "FLOPPY User Guide" DD/US/112 available in the UCO,
  7.    Batiment 512, Tel. 4952.
  8.  
  9.    FLOPPY can also produce output for the FLOW program, a tool
  10.    which analyses the structure of Fortran code. Type HELP FLOW
  11.    for details. 
  12.  
  13.    There are some extra features which are described below.
  14.  
  15.    For problems with FLOPPY or FLOW contact VXCERN::JULIAN (Tel.5029)
  16.  
  17.   Format:
  18.  
  19.     FLOPPY [filename]
  20.  
  21.    NB Floppy uses FLOP (DD/US/13 Flop User's Guide by H.Grote)
  22.    to parse the source Fortran.
  23. 2   Parameters
  24.  
  25.   filename
  26.  
  27.     Specifies the name of the input file of FORTRAN upon which the
  28.     coding convention checks are to be made. The code must be
  29.     standard FORTRAN 77, and must have compiled without errors,
  30.     otherwise the results from using FLOPPY will be unreliable.
  31.  
  32.     You may use wild-cards in the filename; if more than one file
  33.     is found matching the specification, then the files will be
  34.     internally concatenated.
  35.  
  36.     Note that non-standard constructs such as INCLUDE statements
  37.     will be treated as illegal statements by FLOPPY, and ignored.
  38.  
  39.     If you are using FLOPPY to tidy your Fortran (see /TIDY option),
  40.     then 'filename' may be for instance an EDITF.DAT extracted
  41.     with HISTORIAN option S, or likewise may be a file where the
  42.     COMMON block declarations are hidden in INCLUDE statements. This
  43.     will not jeopardize the indentation of DO loops and IF clauses,
  44.     nor the re-numbering of statement labels.
  45.  
  46. 2   Qualifiers
  47. /CHECKS
  48.  
  49.     /CHECKS[=(n[,.....])]
  50.     /NOCHECKS
  51.  
  52.     Define the coding convention checks to be made.
  53.  
  54.     If no list is given, then the checks marked by a '*'
  55.     in the list below are made.
  56.  
  57.     If n=99 then all checks are made
  58.  
  59.     If /NOCHECKS is specified then no checks are made.
  60.  
  61.     If n is negative, then check number n is not made.
  62.  
  63.     Thus to make all the checks except numbers 3 and 31,
  64.     specify /CHECKS=(99,-3,-31). See the Examples.
  65.  
  66.     The coding convention numbering (n) is as follows:
  67.  
  68.   *  Check no. 1   Avoid comment lines after end of module
  69.   *  Check no. 2   End all program modules with the END statement
  70.   *  Check no. 3   Declared COMMON blocks must be used in the module
  71.   *  Check no. 4   COMPLEX and DOUBLEPRECISION vars at end of COMMON
  72.   *  Check no. 5   COMMON block definitions should not change
  73.   *  Check no. 6   Variable names should be 6 or less characters long
  74.      Check no. 7   Variables in COMMON should be 6 characters long
  75.      Check no. 8   Variables not in COMMON should be <6 characters
  76.   *  Check no. 9   Integer variables should begin with I to N
  77.   *  Check no. 10  Variable names should not equal FORTRAN keywords
  78.   *  Check no. 11  Avoid comment lines before module declaration
  79.   *  Check no. 12  Module names should not equal intrinsic functions
  80.   *  Check no. 13  First statement in a module should be declaration
  81.   *  Check no. 14  Module should begin with at least 3 comment lines
  82.      Check no. 15  Comment lines should begin with a C
  83.   *  Check no. 16  No comment lines between continuations
  84.   *  Check no. 17  Avoid non-standard variable types eg INTEGER*2
  85.   *  Check no. 18  Avoid multiple COMMON definitions per line
  86.   *  Check no. 19  Do not dimension COMMON variables outside COMMON
  87.   *  Check no. 20  Avoid embedded blanks in variable names
  88.   *  Check no. 21  Avoid embedded blanks in syntactic entities
  89.   *  Check no. 22  Avoid the use of PRINT statements (use WRITE)
  90.      Check no. 23  Do not give the END statement a label
  91.   *  Check no. 24  Avoid WRITE(* construction
  92.      Check no. 25  Avoid WRITE statement in a FUNCTION
  93.   *  Check no. 26  Avoid the use of PAUSE statements
  94.   *  Check no. 27  Statement labels should not begin in column 1
  95.   *  Check no. 28  Always precede STOP by a descriptive WRITE
  96.   *  Check no. 29  Avoid the use of ENTRY in FUNCTIONS
  97.   *  Check no. 30  Avoid using I/O in FUNCTIONs
  98.      Check no. 31  Avoid the use of the alternate RETURN statement
  99.   *  Check no. 32  COMMON block names should not equal variable names
  100.   *  Check no. 33  Avoid use of obsolete CERN library routines
  101.      Check no. 34  Avoid FUNCTION names the same as intrinsics
  102.   *  Check no. 35  Local functions should be declared EXTERNAL
  103.   *  Check no. 36  Module names should all be different
  104.   *  Check no. 37  Avoid expressions of mixed mode eg A=B/I
  105.   *  Check no. 38  Length of passed CHARACTER variables should be   *
  106.   *  Check no. 39  Order of statements should conform to note
  107.   *  Check no. 40  Separate Statement Functions by comment lines
  108.   *  Check no. 41  No names in Statement Function definitions elsewhere
  109.      Check no. 42  Use LLT,LGT etc to compare CHARACTER vars. in IFs
  110.      Check no. 43  Variables (not COMMON, not PARAMs) <6 characters
  111.   *  Check no. 44  Passed arguments should be dimensioned * in module
  112.  
  113.  
  114. /TREE
  115.  
  116.     /TREE
  117.  
  118.     Cause a summary output file to be produced, containing a packed
  119.     description of the source FORTRAN. The summary file contains
  120.     such information as the list of all FORTRAN module names, their
  121.     arguments, calling list, and so on. The file is unformatted; it
  122.     should be used as input to an auxiliary tool called TREE, and
  123.     is unreadable at the terminal.
  124.  
  125. /OUTPUT
  126.  
  127.     /OUTPUT[=filename]
  128.  
  129.     Cause the output from FLOPPY (normally viewed at the terminal)
  130.     to be sent to a disk file. If filename is not specified the
  131.     output file will have the stem name of the source FORTRAN file,
  132.     with an extension of .FLOPLIS .
  133.  
  134. /FULL
  135.  
  136.     /FULL
  137.  
  138.     Cause all source FORTRAN statements to be output, as opposed to
  139.     only those breaking the specified coding conventions.
  140.  
  141. /IGNORE
  142.  
  143.     /IGNORE=(name[,.....])
  144.  
  145.     Specify a list of FORTRAN module and variable names to be
  146.     ignored when the coding convention checks are made. Specify
  147.     module names by preceding the name with a # sign e.g. #MINUIT,
  148.     specify variable names normally.
  149.  
  150. /SPECIAL
  151.  
  152.     /SPECIAL[=type]
  153.  
  154.     Specify that a special version of FLOPPY be used. The default
  155.     'special' version is STANDARD, which causes those checks marked
  156.     by a '*' (see /CHECKS) to be implemented.
  157.  
  158.     STANDARD : Use the standard check set.
  159.     ALEPH    : Use the standard ALEPH check set. 
  160.     ONLINE   : Use the check set for Online Programs (not yet available).
  161.     GALEPH   : Variables beginning with G..... or xG.... are ignored.
  162.  
  163.     Other special versions may be defined on request to the author.
  164.  
  165. /LOG
  166.  
  167.     /LOG
  168.     /NOLOG
  169.  
  170.     Show a summary of the FLOPPY command parsing, or not.
  171.  
  172. /OLD
  173.  
  174.     /OLD[=filename]
  175.  
  176.     Each time FLOPPY is run, an "IGNORE" file is written with the
  177.     user specifications for that particular run. If the /OLD
  178.     qualifier is used, one may specify an already existing "IGNORE"
  179.     file. If the filename is omitted, then the filename used is
  180.     obtained from the stem of the source FORTRAN file and the
  181.     extension .FLOPIGN .
  182.  
  183.     Note that this qualifier does not affect the use of /TIDY
  184.     as the FORTRAN tidying parameters are not stored in the "IGNORE"
  185.     file.
  186.  
  187.  
  188. 2   /TIDY
  189.  
  190.     Write a new file of FORTRAN after re-formatting the input
  191.     according to the qualifiers specified.
  192.  
  193.     Format:
  194.  
  195.     FLOPPY/TIDY [filename]
  196.  
  197.     The TIDY qualifier must be accompanied by at least one of the
  198.     following qualifiers. If all you want to do is TIDY your Fortran,
  199.     then use the /NOCHECKS qualifier as well.
  200.  
  201. 3   Qualifiers
  202. /FORTRAN
  203.  
  204.     /FORTRAN[=filename]
  205.  
  206.     Cause the reformatted FORTRAN output to be written on the filename
  207.     specified. If no filename is given, then the output Fortran is
  208.     written to a file called FORTRAN.FOR .
  209.  
  210. /GOTOS
  211.  
  212.     /GOTOS
  213.  
  214.     Right adjust all GOTO statements so that they finish in column 72.
  215.  
  216. /INDENT
  217.  
  218.     /INDENT[=n]
  219.  
  220.     Indent DO and IF clauses by the specified number of spaces. The
  221.     default is 3, and if specified, n should be in the range 1 to 5.
  222.  
  223. /FORMAT
  224.  
  225.     /FORMAT[=(START=n,STEP=m)]
  226.  
  227.     Re-number FORTRAN statements starting at n and stepping by m.
  228.  
  229. /GROUPF
  230.  
  231.     /GROUPF
  232.  
  233.     Group all FORMAT statements at the bottom of each module in which
  234.     they appear.
  235.  
  236. /STMNTS
  237.  
  238.     /STMNTS[=(START=n,STEP=m)]
  239.  
  240.     Re-number all statements (not FORMATs) starting at n and stepping
  241.     by m.
  242.  
  243. 2   Examples
  244.  
  245.     $ FLOPPY myfile.for
  246.  
  247.     Make all the available coding convention checks on the FORTRAN
  248.     file myfile.for.
  249.  
  250.     $ FLOPPY/TREE/NOCHECKS myfile.for
  251.  
  252.     Produce a TREE output file, and make no checks.
  253.  
  254.     $ FLOPPY/IGNORE=(FRED,#MICHEL) myfile.for
  255.  
  256.     Make all the available checks, but ignore the variable called
  257.     FRED and the subroutine called MICHEL.
  258.  
  259.     $ FLOPPY/CHECKS=(1,5,25,3)/FULL myfile.for
  260.  
  261.     Check conventions 1,3,5 and 25, and list all lines from the
  262.     source FORTRAN.
  263.  
  264.     $ FLOPPY/CHECKS=(99,-1,-2,-20) my*.for
  265.  
  266.     Check all conventions except numbers 1,2 and 20. Use all files
  267.     beginning 'MY' and with filetype .FOR .
  268.  
  269.     $ FLOPPY/NOLOG/OUT=output.lis  myfile.for
  270.  
  271.     Send the FLOPPY output to a listing file, and disable the command
  272.     parsing information.
  273.  
  274.     $ FLOPPY/NOCHECKS/TIDY/INDENT=2 myfile.for
  275.  
  276.     Produce a new FORTRAN file with all DO and IF clauses indented by
  277.     two spaces. No coding convention checking is done. The new
  278.     fortran will be called FORTRAN.FOR.
  279.  
  280.     $ FLOPPY/TIDY/STMNTS=(START=10,STEP=5)/FORTRAN=out.for myfile.for
  281.  
  282.     Renumber statements starting at 10 (10, 15, 20 etc.) and write
  283.     the new FORTRAN to the file out.for.
  284.